﻿(function () {
    $(function () {
        var _personsService = abp.services.app.person;
        var _$modal = $("#PersonCreateModal");
        var _$form = _$modal.find("form");

        // 添加联系人
        _$form.find('button[type="submit"]').click(function (e) {
            e.preventDefault();
            if (!_$form.valid()) {
                return;
            }
            var personEditDto = _$form.serializeFormToObject(); // 序列化表单为对象
            personEditDto.PhoneNumbers = [];
            var phoneNumber = {};
            phoneNumber.Type = personEditDto.PhoneNumberType;
            phoneNumber.Number = personEditDto.PhoneNumber;
            personEditDto.PhoneNumbers.push(phoneNumber);

            abp.ui.setBusy(_$modal);
            // 约定大于配置，调用服务时，方法首字母小写，去掉Async后缀
            _personsService.createOrUpdatePerson({ personEditDto: personEditDto }).done(function () {
                // 隐藏模态框
                _$modal.modal("hide");
                // 重新加载页面数据
                refreshPersonList();
            }).always(function () {
                // 不管数据时候提交成功都清楚掉页面的忙碌状态
                abp.ui.clearBusy(_$modal);
            });
        });
        // 添加联系人完毕
        $("#RefreshButton").click(function () {
            refreshPersonList();
        });

        // 刷新联系人
        function refreshPersonList() {
            location.reload();
        }

        // 删除联系人
        $(".delete-person").click(function () {
            var id = $(this).attr("data-person-id");
            var name = $(this).attr("data-person-name");
            deletePerson(id, name);
        });

        function deletePerson(id, name) {
            abp.message.confirm("删除姓名为[" + name + "]的联系人", function (isConfirmed) {
                if (isConfirmed) {
                    _personsService.deletePerson({ id: id }).done(function () {
                        refreshPersonList();
                    });
                }
            });
        }

        // 编辑联系人信息
        $(".edit-person").click(function(e) {
            e.preventDefault();
            var id = $(this).attr("data-person-id");
            _personsService.getPersonForEdit({ id: id }).done(function (data) {
                $("input[name=Id]").val(data.person.id);
                $("input[name=Name]").val(data.person.name).parent().addClass("focused");
                $("input[name=Email]").val(data.person.email).parent().addClass("focused");
                $("input[name=PhoneNumber]").val(data.person.phoneNumbers[0].number).parent().addClass("focused");
                $("select[name=PhoneNumberType]").selectpicker('val', data.person.phoneNumbers[0].type).parent().addClass("focused");
                $("input[name=Address]").val(data.person.address).parent().addClass("focused");
            });
        });
        // 关闭模态窗口时，清空输入框的内容
        _$modal.on("hide.bs.modal", function() {
            _$form[0].reset();
        });
    });
})();